<?php

require_once 'Basic.php';

class ReservaList {
  
  private $list;
  private $dbFail;
  
  public function __construct() {
    $this->list = new Report();
    $this->dbFail = false;
    $this->buildList();
  }
  
  private function buildList() {
    $db = new DBUtils();
    
    try {
      $db->connect();
      $db->runQuery("select * from TodasReservas");
      for($item = $db->getItem(); $item !== null; $item = $db->getItem()) {
        $listItem = new ReportItem("-");
        $listItem->addLine("Código", $item->idReserva);
        if($item->tipoCliente === "fisica") {
          $listItem->addLine("Nome do Cliente", $item->nomeCliente);
        }
        else {
          if($item->tipoCliente === "juridica") {
            $listItem->addLine("Razao Social do Cliente", $item->razaoSocial);
          }
        }
        $listItem->addLine("Data/Hora Prevista de Início", $item->previsaoInicio->format('d/m/Y H:i'));
        $listItem->addLine("Data/Hora Prevista de Término", $item->previsaoTermino->format('d/m/Y H:i'));
        $listItem->addLine("Nome do Modelo Reservado", $item->nomeModelo);
        $listItem->addLine("Filial de Obtenção", $item->nomeFilialObtencao);
        $listItem->addLine("Filial de Devolução", $item->nomeFilialDevolucao);
        $listItem->addLink("Dados do Cliente", "ClientInfo.php?idCliente=" . $item->idCliente);
        $listItem->addLink("Dados do Modelo", "ModelList.php#" . $item->idModelo);
        $listItem->addLink("Cancelar Reserva", "CancelaReserva.php?idReserva=" . $item->idModelo . "&conf=0");
  
        $this->list->addItem($listItem);
      }
      $db->close(true);
    }
    catch(DBError $e) {
      $db->close();
      $this->dbFail = true;
      logMessage($e, "ModelList");
    }
  }
 
  public function getHtml() {
    if($this->dbFail) {
      return "<p>Falha ao acessar o banco de dados. O erro foi reportado.</p>";
    }
    else {
      return $this->list->getHtml();
    }
  }

}

mustBeEmployee();
$list = new ReservaList();
$page = new Page("Todas as Reservas");
$page->addContent($list->getHtml());
echo $page->getHtml();